package com.blog.cloud.monitor.vo;

import cn.hutool.system.SystemUtil;
import lombok.Getter;
import lombok.Setter;

/**
 * JVM信息对象
 */
@Getter
@Setter
public class JvmVO {

    /**
     * JVM 名称
     */
    private String name;

    /**
     * JVM 最大可用内存总数(G)
     */
    private double max;

    /**
     * JVM 占用的内存总数(M)
     */
    private double total;

    /**
     * JVM 已用内存(M)
     */
    private double used;

    /**
     * JVM 空闲内存(M)
     */
    private double free;

    /**
     * JVM 内存使用率
     */
    private double usage;

    /**
     * Java 版本
     */
    private String version;

    /**
     * Java 供应商
     */
    private String vendor;

    public JvmVO() {
        this.setName(SystemUtil.getRuntimeMXBean().getVmName());
        this.setMax(SystemUtil.getMaxMemory());
        this.setTotal(SystemUtil.getTotalMemory());
        this.setFree(SystemUtil.getFreeMemory());
        this.setUsed(this.getTotal() - this.getFree());
        this.setUsage((this.getUsed() % this.getTotal()) * 100);
        this.setVersion(SystemUtil.getJavaInfo().getVersion());
        this.setVendor(SystemUtil.getJavaInfo().getVendor());
    }

}
